<%--
  Created by IntelliJ IDEA.
  User: 缪林辉
  Date: 2024/1/8
  Time: 23:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>rest </title>
    <script type="text/javascript" src="script/jquery-3.6.0.min.js"></script>
    <script type="text/javascript">
        $(function () {//当页面加载完成后，就执行
            //给删除超链接绑定一个点击事件
            $("#deleteBook").click(function () {
                alert("ok");
                var href = this.href;
                $("#hiddenForm").attr("action", href);
                //向input中填入信息
                $(":hidden").val("DELETE");
                $("#hiddenForm").submit();//这里就是提交删除请求了
                return false;//改变点击超链接的行为，不在提交，否则会提交两次
            });
        })
    </script>
</head>

<body>
<h3>Rest 风格的 crud 操作案例</h3>
<br>
<hr>
<h3>rest 风格的 url 查询书籍[get]</h3>
<a href="user/book/100">点击查询书籍</a>
<br>
<hr>
<h3>rest 风格的 url 添加书籍[post]</h3>
<form action="user/book" method="post">
    name:<input name="bookName" type="text"><br>
    <input type="submit" value="添加书籍">
</form>
<br>
<hr>
<h3>rest 风格的 url, 删除一本书</h3>
<!--从源码可以看到HiddenHttpMethodFilter 过滤器可以对以Post方式（不能是get）提交的delete , put , patch进行转换成springmv-->
<!--识别的RequestMethod . DELETE / RequestMethod.PUT /...-->
<!--我们需要将get <a href= "user/book/ 600">删除指定id的书</a> 以post方式提交给后端handler, 这样过滤器才会生效-->
<!--我们可以同jquery. 来处理-引入jquery-->
<!-- 这里我们需要将删除方式（get）转成 delete 的方式，需要使用过滤器和 jquery 来完成
name="_method" 名字需要写成 _method因为后台的HiddenHttpMethodFilter就是按这个名字来获取hidden域的值，从而进行请求转换的. -->
<a href="user/book/100" id="deleteBook">删除指定 id 的书</a>
<form action="" method="POST" id="hiddenForm">
    <input type="hidden" name="_method"/>
</form>
<br>
<hr>
<h3>rest 风格的 url 修改书籍[put]~</h3>
<form action="user/book/100" method="post">
    <input type="hidden" name="_method" value="PUT">
    <input type="submit" value="修改书籍~">
</form>
</body>
</html>